-- 创建冷却检测框架
local cooldownFrame = CreateFrame("Frame", "ExplosiveShotCooldownTracker", UIParent)
cooldownFrame:SetSize(200, 60)
cooldownFrame:SetPoint("CENTER", 0, 150)

-- 设置背景
local bg = cooldownFrame:CreateTexture(nil, "BACKGROUND")
bg:SetAllPoints(true)
bg:SetColorTexture(0.1, 0.1, 0.2, 0.7)

-- 设置边框
local border = cooldownFrame:CreateTexture(nil, "BORDER")
border:SetPoint("TOPLEFT", -3, 3)
border:SetPoint("BOTTOMRIGHT", 3, -3)
border:SetColorTexture(0.3, 0.3, 0.5, 0.5)

-- 标题文本
local title = cooldownFrame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
title:SetPoint("TOP", 0, -10)
title:SetText("爆炸射击冷却检测")
title:SetTextColor(1, 0.8, 0)

-- 冷却状态文本
local cooldownText = cooldownFrame:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
cooldownText:SetPoint("CENTER", 0, 10)
cooldownText:SetText("冷却状态: 未知")

-- 爆炸射击法术ID（熊猫人之谜版本）
local EXPLOSIVE_SHOT_SPELL_ID = 53301

-- 存储冷却状态
local isOnCooldown = false
local cooldownStart = 0
local cooldownDuration = 0

-- 更新冷却状态显示
local function UpdateCooldownDisplay()
    if isOnCooldown then
        local remaining = cooldownDuration - (GetTime() - cooldownStart)
        if remaining > 0 then
            cooldownText:SetText(string.format("冷却中: %.1f秒", remaining))
            cooldownText:SetTextColor(1, 0, 0) -- 红色
        else
            isOnCooldown = false
            cooldownText:SetText("可用")
            cooldownText:SetTextColor(0, 1, 0) -- 绿色
        end
    else
        cooldownText:SetText("可用")
        cooldownText:SetTextColor(0, 1, 0) -- 绿色
    end
end

-- 检查冷却状态
local function CheckCooldown()
    local start, duration, enabled = GetSpellCooldown(EXPLOSIVE_SHOT_SPELL_ID)

    if enabled == 0 then
        -- 技能不可用（可能未学习或条件不满足）
        isOnCooldown = false
        cooldownText:SetText("技能不可用")
        cooldownText:SetTextColor(0.5, 0.5, 0.5) -- 灰色
        return
    end

    if duration > 1.5 then  -- 忽略GCD（公共冷却时间）
        isOnCooldown = true
        cooldownStart = start
        cooldownDuration = duration
    else
        isOnCooldown = false
    end

    UpdateCooldownDisplay()
end

-- 注册事件
cooldownFrame:RegisterEvent("SPELL_UPDATE_COOLDOWN")
cooldownFrame:RegisterEvent("SPELL_UPDATE_USABLE")
cooldownFrame:RegisterEvent("PLAYER_ENTERING_WORLD")

-- 事件处理
cooldownFrame:SetScript("OnEvent", function(self, event)
    if event == "SPELL_UPDATE_COOLDOWN" or event == "SPELL_UPDATE_USABLE" or event == "PLAYER_ENTERING_WORLD" then
        CheckCooldown()
    end
end)

-- 设置更新频率
local updateInterval = 0.1
local elapsed = 0

cooldownFrame:SetScript("OnUpdate", function(self, delta)
    elapsed = elapsed + delta
    if elapsed < updateInterval then return end
    elapsed = 0

    if isOnCooldown then
        UpdateCooldownDisplay()
    end
end)

-- 添加拖动功能
cooldownFrame:SetMovable(true)
cooldownFrame:EnableMouse(true)
cooldownFrame:SetClampedToScreen(true)
cooldownFrame:RegisterForDrag("LeftButton")

cooldownFrame:SetScript("OnDragStart", cooldownFrame.StartMoving)
cooldownFrame:SetScript("OnDragStop", cooldownFrame.StopMovingOrSizing)

-- 初始检查
CheckCooldown()

-- 打印说明
print("爆炸射击冷却检测框已创建")
print(" - 拖动：鼠标左键")
print(" - 显示爆炸射击冷却状态")